#include<stdio.h>
int main() {
		int arr[20][20] = {{1}};
		printf("请输入杨辉三角的列数:\n");
		int n = 0;
		scanf("%d", &n);
		for (int i = 1; i < n; i++) {
			arr[i][0] = 1;
				for (int j = 1; j <= i; j++) {
					arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
				}
		}
			for (int i = 0; i < n; i++) {
				for(int k = 0; k < n - i - 1; k++){
					printf(" ");
				}
				for (int j = 0; j <= i; j++) {
					printf("%d ", arr[i][j]);
				}
				printf("\n");
		}
		return 0;
	}
/*	void yangHuiTriangle(int n) {
		int data[30] = { 1 };

int i, j;
printf("1\n"); //第一行就直接打印了
for (i = 1; i < n; i++) { //从第二行开始
for (j = i; j > 0; j--) { //从后向前填，避免上一行的数据在使用前就被覆盖
data[j] += data[j - 1]; //公式同上，由于变成了一维，公式也变简单了。
}
for (j = 0; j <= i; j++) { //这一行填完就直接打印了。
printf("%d ", data[j]);
}
putchar('\n');
}
}
return 0;
}*/
//这种方法虽然降低了空间复杂度，但只能保存最后一行的数据，不利于反复查询，两个填法各有各的适用场景。
